/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   13-4-14 下午6:37 Created by dwzhang
 */
package com.jade.framework.base.util.encryption;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;

/**
 * 采用MD5和BASE64方式加密。
 *
 * @author dwzhang
 * @version 1.0 13-4-14 下午6:37
 */
public class MD5Base64Encryption implements Encryption
{
    /**
     * 加密
     *
     * @param password 密码明文
     * @return 加密后的密文
     */
    public String encrypt(String password)
    {
        return password == null ? null : encrypt(password.getBytes());
    }

    /**
     * 加密
     *
     * @param password 密码明文
     * @return 加密后的密文
     */
    private String encrypt(byte[] password)
    {
        byte[] md5 = DigestUtils.md5(password);
        return new String(Base64.encodeBase64(md5));
    }

    /**
     * 检查密码是否匹配
     *
     * @param password  需要检查的密码明文
     * @param encrypted 密码密文
     */
    public boolean check(String password, String encrypted)
    {
        String newEncrypted = encrypt(password);
        return StringUtils.equals(newEncrypted, encrypted);
    }
}
